Block template creation

ABSTRACT

A method, computer system, and computer program create a template in an integrated development environment. A set of tiles is displayed within a first area of a graphical user interface. Each tile corresponds to a set of data nodes that are composable into structured data objects according to a domain-specific language. A structured data object is composed from a subset of the tiles. The subset is displayed within a second area of the graphical user interface according to a context of the data nodes. Values are applied to properties of data nodes of the subset according to the context of the data nodes in the structured data object. The template is created from selected tiles of the subset. The template includes the values for the properties as-applied within the context.

BACKGROUND 1. Field

The present disclosure relates to methods and devices for creatingspecial purpose computers whose hardware and programming enabletransformation of a user interface and transformation of the function ofa computer such that an untrained user may develop applications.

2. Description of the Related Art

Currently, when a new computer program is desired, a trained programmeruses one or more specialized computer languages to create code. The codeinstructs a computer to perform a desired function.

In most cases, even for simple programs, the programmer will haveextensive training in order to write code that will be capable ofcreating the desired computer functionality. In the case of complexsoftware, the programmer may need to develop an architecture for thecomputer program, and then write the code to implement the architecture.For a large project, an entire team of trained programmers may be neededto create the desired code.

Thus, the process of coding is complex, expensive, and, for someindividuals beyond their ability. For most individuals, the solution toproviding a computer with a desired functionality is to purchasepre-programmed software to enable the desired functionality. Forexample, a user desiring to use a computer to perform businessaccounting may purchase an accounting program that provides a computerwith the functionality of performing accounting procedures on thecomputer.

Nevertheless, a user may desire specialized functionality for thecomputer that is not currently for sale, or may desire to modify anexisting program. However, unless that user is a trained programmer andis willing to expend the resources needed to code a new program, theuser will not be able to use the desired specialized functionality onthe computer.

SUMMARY

According to one embodiment of the present invention, a method isprovided for creating a template in an integrated developmentenvironment. The method includes displaying a set of tiles within afirst area of a graphical user interface. Each tile corresponds to a setof data nodes that are composable into structured data objects accordingto a domain-specific language of the integrated development environment.The method includes composing a structured data object from a subset ofthe tiles according to the domain-specific language of the integrateddevelopment environment. The subset is displayed within a second area ofthe graphical user interface according to a context of the data nodes ofthe structured data object. The method includes applying values toproperties of data nodes of the subset according to the context of thedata nodes of the structured data object. The method includes creatingthe template from selected tiles of the subset. The template includesthe values for the properties as-applied within the context of the datanodes of the structured data object.

According to another embodiment of the present invention, a templatecreation system is provided for creating a template in an integrateddevelopment environment. The template creation system includes a displaysystem having a graphical user interface displayed thereon, and acomputer system having a template creator therein. The template creatoris configured to display a set of tiles within a first area of thegraphical user interface. Each tile corresponds to a set of data nodesthat are composable into structured data objects according to adomain-specific language of the integrated development environment. Thetemplate creator is further configured to compose a structured dataobject from a subset of the tiles according to the domain-specificlanguage of the integrated development environment. The subset isdisplayed within a second area of the graphical user interface accordingto a context of the data nodes of the structured data object. Thetemplate creator is further configured to apply values to properties ofdata nodes of the subset according to the context of the data nodes ofthe structured data object. The template creator is further configuredto create the template from selected tiles of the subset. The templateincludes the values for the properties as-applied within the context ofthe data nodes of the structured data object.

According to yet another embodiment of the present invention, a computerprogram product for creating a template in an integrated developmentenvironment comprises a computer-readable-storage media with programcode stored on the computer-readable storage media. The program codeincludes code for displaying a set of tiles within a first area of agraphical user interface. Each tile corresponds to a set of data nodesthat are composable into structured data objects according to adomain-specific language of the integrated development environment. Theprogram code includes code for composing a structured data object from asubset of the tiles according to the domain-specific language of theintegrated development environment. The subset is displayed within asecond area of the graphical user interface according to a context ofthe data nodes of the structured data object. The program code includescode for applying values to properties of data nodes of the subsetaccording to the context of the data nodes of the structured dataobject. The program code includes code for creating the template fromselected tiles of the subset. The template includes the values for theproperties as-applied within the context of the data nodes of thestructured data object

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial representation of a network of data processingsystems in which illustrative embodiments may be implemented;

FIG. 2 is a block diagram of an integrated development environment inaccordance with an illustrative embodiment;

FIG. 3 is a block diagram of an integrated development system inaccordance with an illustrative embodiment;

FIG. 4 is a block diagram illustrating an integrated development systemdata in accordance with an illustrative embodiment;

FIG. 5 is an illustration of a block diagram of an example of anoperation of a user interface engine of an integrated development systemdata in accordance with an illustrative embodiment;

FIG. 6 is an illustration of a block diagram of a structured data objectin accordance with an illustrative embodiment;

FIG. 7 is a graphical user interface for composing structured dataobjects according to a domain-specific language according to anillustrative example;

FIG. 8 is a graphical user interface having a selected subset of datanodes according to an illustrative example;

FIG. 9 is a template creation modal according to an illustrativeexample;

FIG. 10 is a graphical user interface having a drop zone for addingadditional templates to a structured data object according to anillustrative example;

FIG. 11 is a graphical user interface having multiple drop zones forsimultaneously adding additional templates to a plurality data nodes ofstructured data object according to an illustrative example;

FIG. 12 is a first example of a template selection modal according to anillustrative example;

FIG. 13 is a first example of a template selection modal is depictedaccording to an illustrative example;

FIG. 14 is a flowchart of a process for creating a template in anintegrated development environment in accordance with an illustrativeembodiment;

FIG. 15 is a flowchart of a process for creating a template from aselected subset of data nodes according to an illustrative example;

FIG. 16 is a flowchart of a process for receiving template informationaccording to an illustrative example;

FIG. 17 is a flowchart of a process for storing template informationaccording to an illustrative example;

FIG. 18 is a flowchart of a process for creating a template from one ormore existing templates according to an illustrative example; and

FIG. 19 is a block diagram of a data processing system in accordancewith an illustrative embodiment.

DETAILED DESCRIPTION

The illustrative embodiments recognize and take into account one or moredifferent considerations. For example, the illustrative embodimentsrecognize and take into account that an integrated developmentenvironment makes application programming easier for users with littleto no background in computer software development. Instead of usingtraditional hand-coded computer programming, an integrated developmentenvironment enables developers to create applications using a visualuser interface in combination with model-driven logic. Low-codedevelopment platforms reduce the amount of traditional hand coding,enabling accelerated delivery of business applications.

The illustrative embodiments recognize and take into account that asusers gain familiarity with the integrated development environment,repeated interactions with graphical elements become tedious. While anintegrated development environment allows inexperienced developers toeasily drag-and-drop pre-built features to an application canvas, theserepeated actions decrease development efficiency for experienced users.

Furthermore, the illustrative embodiments recognize and take intoaccount that low knowledge barrier of an integrated developmentenvironment can create inconsistencies in the application architecture,user experience (UX) and user interface (UI). Different developmentteams building out different applications in different ways createdisparity in both the structure and presentation of related softwareproducts.

The illustrative embodiments recognize and take into account thatdevelopers building products in an integrated development environmentcan start their work easier and faster using block templates. The use oftemplates can enforce application consistency in all development works,such as the application architecture, user experience (UX) and userinterface (UI).

Thus, the embodiments provide a method, system and computer programproduct for creating a template in an integrated developmentenvironment. In particular, a method may be present that helps anoperator create a template more quickly and easily as compared totemplate creation using currently available integrated developmentsoftware. Furthermore, the use of templates provided by the illustrativeembodiments may enable application consistency more quickly and easilyas compared to template creation using currently available integrateddevelopment software.

In one illustrative example, a method is present for creating a templatein an integrated development environment. A set of tiles is displayedwithin a first area of a graphical user interface. Each tile correspondsto a set of data nodes that are composable into structured data objectsaccording to a domain-specific language of the integrated developmentenvironment. A structured data object is composed from a subset of thetiles according to the domain-specific language of the integrateddevelopment environment. The subset is displayed within a second area ofthe graphical user interface according to a context of the data nodes ofthe structured data object. Values are applied to properties of datanodes of the subset according to the context of the data nodes of thestructured data object. The template is created from selected tiles ofthe subset. The template includes the values for the propertiesas-applied within the context of the data nodes of the structured dataobject.

With reference now to the figures and, in particular, with reference toFIG. 1, a pictorial representation of a network of data processingsystems is depicted in which illustrative embodiments may beimplemented. Network data processing system 100 is a network ofcomputers in which the illustrative embodiments may be implemented.Network data processing system 100 contains network 102, which is themedium used to provide communications links between various devices andcomputers connected together within network data processing system 100.Network 102 may include connections, such as wire, wirelesscommunication links, or fiber optic cables.

In the depicted example, server computer 104 and server computer 106connect to network 102 along with storage unit 108. In addition, clientdevices 110 connect to network 102. As depicted, client devices 110include client computer 112, client computer 114, and client computer116. Client devices 110 can be, for example, computers, workstations, ornetwork computers. In the depicted example, server computer 104 providesinformation, such as boot files, operating system images, andapplications to client devices 110. Further, client devices 110 can alsoinclude other types of client devices such as mobile phone 118, tabletcomputer 120, and smart glasses 122. In this illustrative example,server computer 104, server computer 106, storage unit 108, and clientdevices 110 are network devices that connect to network 102 in whichnetwork 102 is the communications media for these network devices. Someor all of client devices 110 may form an Internet of things (IoT) inwhich these physical devices can connect to network 102 and exchangeinformation with each other over network 102.

Client devices 110 are clients to server computer 104 in this example.Network data processing system 100 may include additional servercomputers, client computers, and other devices not shown. Client devices110 connect to network 102 utilizing at least one of wired, opticalfiber, or wireless connections.

Program code located in network data processing system 100 can be storedon a computer-recordable storage medium and downloaded to a dataprocessing system or other device for use. For example, program code canbe stored on a computer-recordable storage medium on server computer 104and downloaded to client devices 110 over network 102 for use on clientdevices 110.

In the depicted example, network data processing system 100 is theInternet with network 102 representing a worldwide collection ofnetworks and gateways that use the Transmission ControlProtocol/Internet Protocol (TCP/IP) suite of protocols to communicatewith one another. At the heart of the Internet is a backbone ofhigh-speed data communication lines between major nodes or hostcomputers consisting of thousands of commercial, governmental,educational, and other computer systems that route data and messages. Ofcourse, network data processing system 100 also may be implemented usinga number of different types of networks. For example, network 102 can becomprised of at least one of the Internet, an intranet, a local areanetwork (LAN), a metropolitan area network (MAN), or a wide area network(WAN). FIG. 1 is intended as an example, and not as an architecturallimitation for the different illustrative embodiments.

As used herein, “a number of” when used with reference to items, meansone or more items. For example, “a number of different types ofnetworks” is one or more different types of networks.

Further, the phrase “at least one of,” when used with a list of items,means different combinations of one or more of the listed items can beused, and only one of each item in the list may be needed. In otherwords, “at least one of” means any combination of items and number ofitems may be used from the list, but not all of the items in the listare required. The item can be a particular object, a thing, or acategory.

For example, without limitation, “at least one of item A, item B, oritem C” may include item A, item A and item B, or item B. This examplealso may include item A, item B, and item C or item B and item C. Ofcourse, any combinations of these items can be present. In someillustrative examples, “at least one of” can be, for example, withoutlimitation, two of item A; one of item B; and ten of item C; four ofitem B and seven of item C; or other suitable combinations.

In this illustrative example, user 124 can use client computer 112 tointeract with integrated development system 126. Integrated developmentsystem 126 is a system for creating applications 128 and templates 130in an integrated development environment. Using Integrated developmentsystem 126, user 124 can manipulate graphical tiles, each representingwell-defined blocks of code, in order to create applications 128 andtemplates 130.

In one illustrative example, user 124 can build templates 130 fromscratch by linking individual tiles. In one illustrative example, user124 can build templates 130 by selecting one or more tiles from apreviously created application. Since the development platform usesblocks of code, current embodiments provide a way to create templatesusing placed blocks on on-campus of the graphical user interface. Unlikesymbols, act as a master copy of the UI component with the ability to beoverridden, templates act more as duplicates where users can edit theblocks without affecting the original template. Starting with an emptycanvas, the user can add blocks and change the property values thereof.Thereafter, the user can select a subset of the composed blocks andcreate a template from the selected subset.

In contrast to creating templates using other integrated developmentenvironments, user 124 does not need to worry about property valuesapplied inside tiles. Property values applied inside tiles of integrateddevelopment system 126 are automatically according to the context of thetiles. Therefore, when user 124 selects tiles to create templates, theyonly need to worry about which tiles are being selected.

The creation flow allows platform developers to either build a templateby composing blocks on the canvas. Alternatively, blocks can be selectedfrom any previously created documents and a template created therefrom.When a user selects blocks to create templates, they only need to worryabout which blocks are selected—property values applied inside theblocks are automatically carried over and applied within the context ofthe composed template.

Integrated development system 126 provides a technical solution thatovercomes a technical problem of quickly and easily generating newtemplates and applications. Integrated development system 126 createstemplates 130 that include values for the properties as-applied withinthe context of the data nodes of a structured data object. In thismanner, integrated development system 126 enables user 124 to create newapplications in applications 128 and templates 130 more easily andquickly. As a result, this technical solution to the technical problemof generating templates and applications provides a technical effect inwhich a new templates and applications are generated more easily andquickly while requiring less knowledge or training from an operator.

With reference now to FIG. 2, a block diagram of an integrateddevelopment environment is depicted in accordance with an illustrativeembodiment. In this illustrative example, integrated developmentenvironment 200 includes components that can be implemented in hardwaresuch as the hardware shown in network data processing system 100 in FIG.1.

In integrated development environment 200, a method for creating atemplate can be performed using integrated development system 202. Inthis illustrative example, the method for creating a template can beperformed by template creator 204 running on computer system 206. Themethod for creating a template can be performed in a manner that enablesnew templates and applications to be generated more easily and quicklywhile requiring less knowledge or training from an operator.

In this illustrative example, integrated development system 202 includesa number of different components. As depicted, integrated developmentsystem 202 comprises computer system 206, template creator 204 incomputer system 206, and display system 208.

Template creator 204 can be implemented in software, hardware, firmwareor a combination thereof. When software is used, the operationsperformed by template creator 204 can be implemented in program codeconfigured to run on hardware, such as a processor unit. When firmwareis used, the operations performed by template creator 204 can beimplemented in program code and data and stored in persistent memory torun on a processor unit. When hardware is employed, the hardware mayinclude circuits that operate to perform the operations in templatecreator 204.

In the illustrative examples, the hardware may take a form selected fromat least one of a circuit system, an integrated circuit, an applicationspecific integrated circuit (ASIC), a programmable logic device, or someother suitable type of hardware configured to perform a number ofoperations. With a programmable logic device, the device can beconfigured to perform the number of operations. The device can bereconfigured at a later time or can be permanently configured to performthe number of operations. Programmable logic devices include, forexample, a programmable logic array, a programmable array logic, a fieldprogrammable logic array, a field programmable gate array, and othersuitable hardware devices. Additionally, the processes can beimplemented in organic components integrated with inorganic componentsand can be comprised entirely of organic components excluding a humanbeing. For example, the processes can be implemented as circuits inorganic semiconductors.

Computer system 206 is a physical hardware system and includes one ormore data processing systems. When more than one data processing systemis present in computer system 206, those data processing systems are incommunication with each other using a communications medium. Thecommunications medium can be a network. The data processing systems canbe selected from at least one of a computer, a server computer, a tabletcomputer, or some other suitable data processing system.

As depicted, template creator 204 in computer system 206 displays a setof tiles 210 within a first area 212 of a graphical user interface 214.In integrated development system 202, each tile, such as tile 213corresponds to a set of data nodes, such as one or more of data nodes216. Set of tiles 210 are composable into structured data objects 218according to a domain-specific language of the integrated developmentsystem 202.

In this illustrative example, structured data object 220 is composedfrom a subset 222 of the tiles 210 according to the domain-specificlanguage of the integrated development system 202. Template creator 204displays the subset 222 within a second area 224 of the graphical userinterface 214 according to a context 226 of the data nodes of thestructured data object 220.

Template creator 204 applies values 228 to properties 230 of data nodesof the subset 222. Template creator 204 applies values 228 according tothe context 226 of the data nodes of the structured data object 220.

Template creator 204 creates the template 232 from selected tiles 234 ofthe subset 222. The template 232 includes the values 228 for theproperties 230 as-applied within the context 226 of the data nodes ofthe structured data object 220.

In one illustrative example, template creator 204 identifies selectedtiles 234 from the subset 222 of the tiles displayed within the secondarea 224 of the graphical user interface 214. Template creator 204creates template 232 in response to identifying the selected tiles 234.

In this illustrative example, template creator 204 can identify selectedtiles 234 in a number of different ways. For example, integrateddevelopment system 126 can receive user input that contains a selectionof one or more composed tiles in subset 222. User input can be generatedby a human machine interface that comprises an input system and adisplay system 208, enabling a user, such as user 124 of FIG. 1, tointeract with integrated development system 202.

In one illustrative example of creating the template, template creator204 displaying a modal 235. Modal 235 is a graphical element that sitson top of the graphical user interface 214, overlying one or more of thefirst area 212, the second area 224, the third area 236. Modal 235creates a mode that disables a main window of the graphical userinterface 214, but keeps the main window visible with modal 235 as achild window in front of it. Users must interact with modal 235 beforefurther interacting with one or more of the first area 212, the secondarea 224, the third area 236 of graphical user interface 214.

Template creator 204 receives information 238 within the modal 235.Information 238 is information about the template 232. Information 238can include, for example, a name of the template, and a description ofthe template, including a best use case, best practices,recommendations, instructions, and notices, as well as other informationrelevant to the creation of template 232.

In one illustrative example, template creator 204 stores the values 228as-applied within the context 226 of the structured data object 220 inassociation with the template 232 of the selected tiles 234. Templatecreator 204 displays template 232 as one of templates 240, which can besubsequently incorporated into additional structured data objects.

In one illustrative example, one or more technical solutions are presentthat overcome a technical problem with of quickly and easily generatingnew templates and applications. As a result, one or more technicalsolutions may provide a technical effect in which a new templates andapplications are generated more easily and quickly while requiring lessknowledge or training from an operator.

Computer system 206 can be configured to perform at least one of thesteps, operations, or actions described in the different illustrativeexamples using software, hardware, firmware or a combination thereof. Asa result, computer system 206 operates as a special purpose computersystem in which template creator 204 enables a user to create newreports, applications, and templates more easily and quickly whilerequiring less knowledge or training. In particular, template creator204 transforms computer system 206 into a special purpose computersystem as compared to currently available general computer systems thatdo not have template creator 204.

In the illustrative example, the use of template creator 204 in computersystem 206 integrates processes into a practical application forcreating a template in an integrated development environment thatincreases the performance of computer system 206 In other words,template creator 204 in computer system 206 is directed to a practicalapplication of processes integrated into template creator 204 incomputer system in 206 that creates a template in an integrateddevelopment environment. In this illustrative example, template creator204 in computer system 206 displays a set of tiles within a first areaof a graphical user interface; composes a structured data object from asubset of the tiles according to the domain-specific language of theintegrated development environment; applies values to properties of datanodes of the subset according to the context of the data nodes of thestructured data object; and creates the template from selected tiles ofthe subset, wherein the template includes the values for the propertiesas-applied within the context of the data nodes of the structured dataobject. In this manner, template creator 204 in computer system 206results in an improved integrated development system that provides apractical application of creating templates such that the functioning ofcomputer system 206 is improved.

With reference now to FIG. 3, a block diagram of an integrateddevelopment system is depicted in accordance with an illustrativeembodiment. In this illustrative example, integrated development system202 includes components that can be implemented in integrateddevelopment environment 200 of FIG. 2.

In one illustrative example, a plurality of templates 240 can becomposed together in second area 224 to create structured data object220. For example, template creator 204 can identify a first template302, including a first set of values 304 for a first set of properties306 as-applied within a context 308 of first data nodes 310 of a firststructured data object 312. Template creator 204 can identify a secondtemplate 314, including a second set of values 316 for a second set ofproperties 318 as-applied within a context 308 of second data nodes 320of a second structured data object 322.

Template creator 204 composes the first structured data object 312 fromthe subset 222 of the tiles 210 and the second template 314. Templatecreator 204 applies the first values 304 to the first properties 306according to the context 308 of both the first structured data object312 and the second structured data object 322.

In one illustrative example, identical data nodes can simultaneously beadded to multiple data nodes of a structured data object, while takinginto account the individual contexts of the nodes. For example, whencomposing second structured data object 322, template creator 204simultaneously adds data nodes of the second template 314 to both afirst data node of the first structured data object 312 and a seconddata node of the first structured data object 312. Data nodes of thesecond template 314 are added to the first data node according to thecontext of the first data node, and are added to the second data nodeaccording to the context of the second data node.

The illustration of template creator 204 in FIGS. 2-3 is not meant toimply physical or architectural limitations to the manner in which anillustrative embodiment can be implemented. Other components in additionto or in place of the ones illustrated may be used. Some components maybe unnecessary. Also, the blocks are presented to illustrate somefunctional components. One or more of these blocks may be combined,divided, or combined and divided into different blocks when implementedin an illustrative embodiment.

FIG. 4 is a block diagram illustrating an integrated development systemdepicted in accordance with an illustrative embodiment. Integrateddevelopment system 400 may be used to manipulate composable data nodesto build at least one of business rules, mini-apps, and apps. Integrateddevelopment system 400 is one example of integrated development system202 of FIG. 2.

User interface engine 402 is computer code, underlying data andstructured data objects which provide underlying functionality andimplementation capability for application designers using applicationdevelopment system 400. Primarily, user interface engine 402 operatesclient-side, meaning that user interface engine 402 operates on aspecific client user's computer, such as one or more of client computer112, client computer 114, and client computer 116 of FIG. 1. In oneillustrative example, user interface engine 402 could be a web browseror an extension to a web browser.

Underlying the user interface, user interface engine 402 may include oneor more modules. As depicted, user interface engine 402 includes tilerenderer module 404, data and metadata binding module 406, and businessrule and workflow module 408. Each module may be considered a collectionof software or computer code which implements the functionality of themodule.

Tile renderer module 404 is computer code which computer 410 may use torender tiles on tangible user display device 412. Tile renderer module404 may receive input from the user, from data and metadata bindingmodule 406, and from business rule and workflow module 408 to change andmanipulate both the functionality of computer 410, which is used toexecute tile renderer module 404, as well as tangible user displaydevice 412, which is used to display rendered tiles.

Data and metadata binding module 406 is computer code which computer 410may use to bind data and structured data objects to the user interface,possibly a browser, so that user interface engine 402 may keep track ofall of the data and structured data objects used in executing businessrules and workflows, as well as rendering tiles. Additional detailsregarding the functionality of data and structured data object bindingmodule 406 is described below with respect to how data and structureddata objects are used in user interface engine 402.

Business rule and workflow module 408 is computer code which computer410 may use to create, join, merge, or otherwise manipulate composabledata nodes in order to create mini-apps, collections, and bundles.Business rule and workflow module 408 is the underlying code whichallows a user to create mini-apps, collections, and bundles without theuser having to code any of the software being developed. Using data andstructured data objects tracked by data and metadata binding module 406,the user can manipulate tiles rendered by tile renderer module 404.Business rule and workflow module 408 uses these composable data nodes,together with work flows and business rules to create the mini-apps,collections, or bundles in a user-perceived codeless developmentenvironment.

Node interpreter 414 is hardware or software which is used to interpretor execute business rules in a business system. Metadata interpreter 414can be software residing in a web browser on computer 410. However, theillustrative embodiments are not necessarily limited to only clientcomputers or web browsers.

Metadata interpreter 414 is a code interpreter designed for adomain-specific language entirely composed of structured data objects.In one illustrative example, metadata interpreter 414 takes the form ofan abstract syntax tree (AST) interpreter with the exception that theabstract syntax tree (AST) structure is composed of well-defined datanodes constructs, joined together in a domain-specific language. Becausethe data node constructs are well-defined when they are constructed,metadata interpreter 414 executes the composition of structured dataobjects without compilation. Data node constructs are composed intowell-defined structured data objects according to selected block typesand properties, replacing the tokenization and parsing that wouldotherwise occur during compilation.

In some illustrative embodiments, user interface engine 402 may takeadvantage of some server-side services operating on one or more servercomputers, such as server computer 416. “Server side” means thatcomputer 410 communicates with server computer 416, possibly over anetwork such as the Internet. Server-side resources are provided tosupport user interface engine 402. While not always necessary forimplementation of user interface engine 402, server-side resources canenhance the functionality of user interface engine 402.

For example, the server-side resources may include user interface engineorchestrator 418. In some exemplary illustrative embodiments, userinterface engine orchestrator 418 may be considered part of userinterface engine 402 such that user interface engine 402 operatespartially both on computer 410, but also on one or more servercomputers, such as server computer 416.

User interface engine orchestrator 418 may serve as a proxy to speed upprocessing of user interface engine 402. User interface engineorchestrator 418 may retrieve structured data objects and then identifywhether data queries are for customer data, business rules, or any otherstructured data objects. User interface engine orchestrator 418 may thenrequest such data, objects, or code, from the data center operatingserver side. User interface engine orchestrator 418 may cache retrieveddata, structured data objects, code, workflows, or objects to be sentback to user interface engine 402.

Server-side services may include other components other than userinterface engine orchestrator 418. For example, server-side resourcescould include one or more metadata and DNA engines 420, which can beused to manage or provide structured data objects for use in userinterface engine 402. Server-side resources may also include one or morepersistence engines 422, which can be used to save work done using userinterface engine 402. Server side resources may also include businessrule engine 424, which may be used to create or store business rulesthat are used by user interface engine 402 in the user-perceivedcodeless building of mini-apps, collections, and bundles.

Server-side resources may also include workflow engine 426, which may beused to create or store workflows that are used by user interface engine402 in the user-perceived codeless building of mini-apps, collections,and bundles.

Server-side resources may also include user interface test engine 428,which may be used to test both the functionality of user interfaceengine 402, possibly as well as the mini-apps, collections, and bundlescreated using user interface engine 402.

FIG. 5 is an illustration of a block diagram of an example of anoperation of a user interface engine shown in FIG. 3, in accordance withan illustrative embodiment. The example shown in FIG. 5 does notnecessarily limit operation of user interface engine 402 as shown inFIG. 4. Nevertheless, FIG. 5 may be read in conjunction with FIG. 4.

In an illustrative embodiment, tile renderer module 404 in FIG. 4 may beused to generate graphical user interface 500. Graphical user interface500 may take the form of tiles 502 shown in web browser 504. Each oftiles 502 may represent a building block. Alternatively, a tile mayrepresent a mini-app, a collection, or even a bundle. Users may interactwith graphical user interface 500, triggering, for example, a “viewactions” command 506.

These actions are sent to dispatcher 508, which may be part of userinterface engine 302, shown in FIG. 3. Dispatcher 508 may send theactions to the business rule and workflow module via subscriptionsregistered with dispatcher 508. Dispatcher 508 may also send serveractions 510 sent by data center 512 to business rule and workflow module408 in FIG. 4 for use in combination with the actions started by theuser.

Business rule and workflow module 408 may run queries and apply businessrules and other logic. Business rule and workflow module 408 may providenavigation 514, data binding 516, and execution by business rules andworkflows executor 518.

Data and metadata binding module 406 in FIG. 4 may apply changes to userinterface state 520 held in memory. User interface state 520 may be heldin a tree structure containing data 522, node 524, and tile state 526.In turn, tile renderer module 404 in FIG. 4 may render graphical userinterface 500. Tile renderer module 404 may listen to state changes inthe tree structure and efficiently update only data 522 and metadata 524that need re-rendering.

With reference next to FIG. 6, an illustration of a block diagram of astructured data object is depicted in accordance with an illustrativeembodiment. Structured data object 600 is an example of a composition ofwell-defined data nodes that can be linked together according to adomain-specific language to create mini-apps, collections, or bundles ina user-perceived codeless development environment, such as applicationdevelopment system 300 of FIG. 3.

Structured data object 600 includes data nodes 610, 612, and 614. Datanodes 610, 612, and 614 are well-defined structured data objects thatcan be manipulated within data and metadata binding module 406 of FIG. 4to create desired business rules. Tile renderer module 404 of userinterface engine 302 may visually present data nodes 610, 612, and 614,enabling the user to build different business rules, mini-apps and appsin application development system 300 of FIG. 3. Each of data nodes 610,612, and 614 correlate to one or more functions, which in turn can beinterpreted by node interpreter 414 of FIG. 4 for implementing thecorresponding business rule. The different permutations of thecompositions of these functions, as well as differentiated input, enablethe execution of the different business rule behaviors at runtime.

The functions of data nodes 610, 612, and 614 operate inside of acontext defined at the beginning of the business rule execution step,which is the target object for all symbols defined in the course of thebusiness rule execution, as well as for all input to and output from thebusiness rule itself. In this manner, data nodes 610, 612, and 614 actas a configuration object to the code being executed, defining anexecution context (or scope being executed against) to other joined datanodes.

For example, structured data object 600 further includes data node 616.Data node 616 provides additional context for execution of related datanode 612. Specifically, data node 616 may indicate that data node 612,as well as child data nodes thereof, should be interpreted within thecontext of data node 616.

Structured data object 600 further includes data node 618. Data node 618provides additional context for execution of both related data node 612and data node 616. For example, data node 618 may indicate thatinformation required for execution of data node 612 should be requestedand received from one or more web services. Data node 618 requests andreturns the same context updated with the information received throughthe web services.

Structured data object 600 further includes business rule node 620.Business rule node 620 provides additional context for execution ofrelated data node 614. Specifically, business rule node 620 may indicatea consuming service for receipt of business rule output provided byrelated data node 614. Business rule node 620 requests and returnsinformation to a consuming service, such as a web page.

With reference next to FIG. 7, a graphical user interface for composingstructured data objects according to a domain-specific language isdepicted according to an illustrative example. Graphical user interface700 is an example of graphical user interface 214 of FIG. 2.

As depicted, graphical user interface 700 includes a first area 702.First area 702 is an example of first area 212 of FIG. 2. First area 212displays tiles 704. Tiles 704 are examples set of tiles 210, shown inblock form in FIG. 2.

As depicted, graphical user interface 700 includes a second area 706.Second area 706 is an example of second area 224 of FIG. 2. Second area706 displays a plurality of data nodes that have been linked together toform a structured data object 708 according to a domain-specificlanguage. Dragging tiles from a first area 702 to second area 706appends the corresponding set of data nodes into a structured dataobject 708 according to the context defined by parent nodes.

As depicted, graphical user interface 700 includes third area 710. Thirdarea 710 is an example of third area 236 of FIG. 2. Third area 710displays templates that can be selected for composing structured dataobject 708.

With reference next to FIG. 8, graphical user interface 700 isillustrated having a selected subset of data nodes according to anillustrative example. In an illustrative example, graphical userinterface 700 displays selected subset 802 in response to receiving userinput that selects subset 802 from within second area 706.

In an illustrative example, graphical user interface 700 displays button804 in response to receiving user input subset 802. In one illustrativeexample, a user can create a new template from the selected subset 802by “clicking” button 804. Alternatively, the user can “right-click” theselected subset 802, opening pop-up menu 806. A user can create a newtemplate from the selected subset 802 by selecting an appropriateelement from pop-up menu 806.

With reference next to FIG. 9, a template creation modal is depictedaccording to an illustrative example. Modal 900 is an example of modal235 of FIG. 2. Graphical user interface can display modal 900 inresponse to receiving user interaction with either button 804 or anappropriate element from pop-up menu 806, both shown in FIG. 8.

Using modal 900, a user can enter information about the template to becreated. The information can include, for example, a name of thetemplate, and a description of the template, including a best use case,best practices, recommendations, instructions, and notices, as well asother information relevant to the creation of the template.Additionally, the user can attach runtime screenshots of the template asa reference for aiding the subsequent creation of new applications.

With reference next to FIG. 10, graphical user interface 700 isillustrated having a drop zone 1002 for adding additional templates to astructured data object according to an illustrative example.

When a new node 1004 is added to the structured data object 708, theuser can “right-click” the new node 1004, opening pop-up menu 1006. Auser can append a template to the existing structured data object 708new by selecting an appropriate element from pop-up menu 1006. Thetemplate is added according to the context of structured data object708.

With reference next to FIG. 11, graphical user interface 700 isillustrated having multiple drop zones for simultaneously addingadditional templates to a plurality data nodes of structured data objectaccording to an illustrative example.

When a new node 1102 and 1104 are added to the structured data object708, the user can “right-click” 1 of the new nodes, opening pop-up menu1004. A user can append a template to the existing structured dataobject 708 by selecting an appropriate element from pop-up menu 806. Thetemplate is added to the data nodes according to their local contextwithin structured data object 708.

With reference next to FIG. 12, a first example of a template selectionmodal is depicted according to an illustrative example. Modal 1200 is anexample of modal 235 of FIG. 2. Graphical user interface can displaymodal 1200 in response to receiving user interaction with theappropriate element from pop-up menu 1006 of FIG. 10.

A user can select one or more templates from modal 1200. The selectedtemplate will then be added to second area 706 of graphical userinterface 700, according to the context of the structured data object708.

With reference next to FIG. 13, a first example of a template selectionmodal is depicted according to an illustrative example. Modal 1300 is anexample of modal 235 of FIG. 2. Graphical user interface can displaymodal 1300 in response to receiving user interaction with theappropriate element from pop-up menu 1006 of FIG. 10.

A user can select one or more templates from modal 1300. The selectedtemplate will then be added to second area 706 of graphical userinterface 700, according to the context of the structured data object708.

Turning next to FIG. 14, a flowchart of a process for creating atemplate in an integrated development environment is depicted inaccordance with an illustrative embodiment. The process in FIG. 14 canbe implemented in hardware, software, or both. When implemented insoftware, the process can take the form of program code that is run byone of more processor units located in one or more hardware devices inone or more computer systems. For example, the process can beimplemented in template creator 204 for in computer system 206 in FIG.2.

The process begins by displaying a set of tiles within a first area of agraphical user interface (step 1410). Each tile corresponds to a set ofdata nodes that are composable into structured data objects according toa domain-specific language of the integrated development environment.

The process composes a structured data object from a subset of the tilesaccording to the domain-specific language of the integrated developmentenvironment (step 1420). The subset is displayed within a second area ofthe graphical user interface according to a context of the data nodes ofthe structured data object.

The process applies values to properties of data nodes of the subsetaccording to the context of the data nodes of the structured data object(step 1430).

The process creates the template from selected tiles of the subset (step1440). The template includes the values for the properties as-appliedwithin the context of the data nodes of the structured data object. Theprocess terminates thereafter.

With reference next to FIG. 15, a process for creating a template from aselected subset of data nodes is depicted according to an illustrativeexample. The process in FIG. 15 can be implemented as part of oneillustrative example of the process of FIG. 14.

Continuing from step 1430 of FIG. 14, the process identifies theselected tiles from the subset of the tiles displayed within the secondarea of the graphical user interface (step 1510). The template iscreated in response to identifying the selected tiles. The processcontinues to step 1440 of FIG. 14 thereafter.

With reference next to FIG. 16, a process for receiving templateinformation is depicted according to an illustrative example. Theprocess in FIG. 16 can be implemented as part of one illustrativeexample of the process of FIG. 14.

Continuing from step 1430 of FIG. 14, the process displays a modaloverlying one or more of the first area, the second area, and the thirdarea of the graphical user interface (step 1610). The process receivesinformation about the template from within the modal (step 1620). Theprocess continues to step 1440 of FIG. 14 thereafter.

With reference next to FIG. 17, a process for storing templateinformation is depicted according to an illustrative example. Theprocess in FIG. 17 can be implemented as part of one illustrativeexample of the process of FIG. 14.

Continuing from step 1440 of FIG. 14, the process stores the valuesas-applied within the context of the structured data object inassociation with the template of the selected tiles (step 1710). Theprocess terminates thereafter.

With reference next to FIG. 18, a process for creating a template fromone or more existing templates is depicted according to an illustrativeexample. The process of FIG. 18 can be implemented as part of oneillustrative example of the process of FIG. 14.

Continuing from step 1410 of FIG. 14, the process identifies a secondtemplate (step 1810). The second template includes a second set ofvalues for a second set of properties as-applied within a context ofdata nodes of a second structured data object. The process thencontinues to step 1420.

In one illustrative example, step 1420 includes composing the firststructured data object from the subset of the tiles and the secondtemplate (step 1820). In one illustrative example, step 1820 includessimultaneously adding data nodes of the second template to a first datanode of the first structured data object first according to the contextof the first data node of the first structured data object and addingthe data nodes of the second template to a second data node of the firststructured data object according to the context of the second data nodeof the first structured data object (step 1830). The process thencontinues to step 1430.

In one illustrative example, step 1430 includes applying the firstvalues to the first properties according to the context of both thefirst structured data object and the second structured data object (step1840). Thereafter, the process continues to step 1440 of FIG. 14.

The flowcharts and block diagrams in the different depicted embodimentsillustrate the architecture, functionality, and operation of somepossible implementations of apparatuses and methods in an illustrativeembodiment. In this regard, each block in the flowcharts or blockdiagrams may represent at least one of a module, a segment, a function,or a portion of an operation or step. For example, one or more of theblocks can be implemented as program code, hardware, or a combination ofthe program code and hardware. When implemented in hardware, thehardware may, for example, take the form of integrated circuits that aremanufactured or configured to perform one or more operations in theflowcharts or block diagrams. When implemented as a combination ofprogram code and hardware, the implementation may take the form offirmware. Each block in the flowcharts or the block diagrams can beimplemented using special purpose hardware systems that perform thedifferent operations or combinations of special purpose hardware andprogram code run by the special purpose hardware.

In some alternative implementations of an illustrative embodiment, thefunction or functions noted in the blocks may occur out of the ordernoted in the figures. For example, in some cases, two blocks shown insuccession can be performed substantially concurrently, or the blocksmay sometimes be performed in the reverse order, depending upon thefunctionality involved. Also, other blocks can be added in addition tothe illustrated blocks in a flowchart or block diagram.

Turning now to FIG. 19, a block diagram of a data processing system isdepicted in accordance with an illustrative embodiment. Data processingsystem 1900 can be used to implement server computer 104, servercomputer 106, client devices 110, in FIG. 1. Data processing system 1900can also be used to implement computer system 206 of FIG. 2. In thisillustrative example, data processing system 1900 includescommunications framework 1902, which provides communications betweenprocessor unit 1904, memory 1906, persistent storage 1908,communications unit 1910, input/output (I/O) unit 1912, and display1914. In this example, communications framework 1902 takes the form of abus system.

Processor unit 1904 serves to execute instructions for software that canbe loaded into memory 1906. Processor unit 1904 includes one or moreprocessors. For example, processor unit 1904 can be selected from atleast one of a multicore processor, a central processing unit (CPU), agraphics processing unit (GPU), a physics processing unit (PPU), adigital signal processor (DSP), a network processor, or some othersuitable type of processor. Further, processor unit 1904 can may beimplemented using one or more heterogeneous processor systems in which amain processor is present with secondary processors on a single chip. Asanother illustrative example, processor unit 1904 can be a symmetricmulti-processor system containing multiple processors of the same typeon a single chip.

Memory 1906 and persistent storage 1908 are examples of storage devices1916. A storage device is any piece of hardware that is capable ofstoring information, such as, for example, without limitation, at leastone of data, program code in functional form, or other suitableinformation either on a temporary basis, a permanent basis, or both on atemporary basis and a permanent basis. Storage devices 1916 may also bereferred to as computer-readable storage devices in these illustrativeexamples. Memory 1906, in these examples, can be, for example, arandom-access memory or any other suitable volatile or non-volatilestorage device. Persistent storage 1908 may take various forms,depending on the particular implementation.

For example, persistent storage 1908 may contain one or more componentsor devices. For example, persistent storage 1908 can be a hard drive, asolid-state drive (SSD), a flash memory, a rewritable optical disk, arewritable magnetic tape, or some combination of the above. The mediaused by persistent storage 1908 also can be removable. For example, aremovable hard drive can be used for persistent storage 1908.

Communications unit 1910, in these illustrative examples, provides forcommunications with other data processing systems or devices. In theseillustrative examples, communications unit 1910 is a network interfacecard.

Input/output unit 1912 allows for input and output of data with otherdevices that can be connected to data processing system 1900. Forexample, input/output unit 1912 may provide a connection for user inputthrough at least one of a keyboard, a mouse, or some other suitableinput device. Further, input/output unit 1912 may send output to aprinter. Display 1914 provides a mechanism to display information to auser.

Instructions for at least one of the operating system, applications, orprograms can be located in storage devices 1916, which are incommunication with processor unit 1904 through communications framework1902. The processes of the different embodiments can be performed byprocessor unit 1904 using computer-implemented instructions, which maybe located in a memory, such as memory 1906.

These instructions are referred to as program code, computer usableprogram code, or computer-readable program code that can be read andexecuted by a processor in processor unit 1904. The program code in thedifferent embodiments can be embodied on different physical orcomputer-readable storage media, such as memory 1906 or persistentstorage 1908.

Program code 1918 is located in a functional form on computer-readablemedia 1920 that is selectively removable and can be loaded onto ortransferred to data processing system 1900 for execution by processorunit 1904. Program code 1918 and computer-readable media 1920 formcomputer program product 1922 in these illustrative examples. In theillustrative example, computer-readable media 1920 is computer-readablestorage media 1924.

In these illustrative examples, computer-readable storage media 1924 isa physical or tangible storage device used to store program code 1918rather than a medium that propagates or transmits program code 1918. Theterm “non-transitory” or “tangible”, as used herein, is a limitation ofthe medium itself (i.e., tangible, not a signal) as opposed to alimitation on data storage persistency (e.g., RAM vs. ROM).Computer-readable storage media 1924, as used herein, is not to beconstrued as being transitory signals per se, such as radio waves orother freely propagating electromagnetic waves, electromagnetic wavespropagating through a waveguide or other transmission media (e.g., lightpulses passing through a fiber-optic cable), or electrical signalstransmitted through a wire.

Alternatively, program code 1918 can be transferred to data processingsystem 1900 using a computer-readable signal media. Thecomputer-readable signal media can be, for example, a propagated datasignal containing program code 1918. For example, the computer-readablesignal media can be at least one of an electromagnetic signal, anoptical signal, or any other suitable type of signal. These signals canbe transmitted over connections, such as wireless connections, opticalfiber cable, coaxial cable, a wire, or any other suitable type ofconnection.

Further, as used herein, “computer-readable media 1920” can be singularor plural. For example, program code 1918 can be located incomputer-readable media 1920 in the form of a single storage device orsystem. In another example, program code 1918 can be located incomputer-readable media 1920 that is distributed in multiple dataprocessing systems. In other words, some instructions in program code1918 can be located in one data processing system while otherinstructions in program code 1918 can be located in one data processingsystem. For example, a portion of program code 1918 can be located incomputer-readable media 1920 in a server computer while another portionof program code 1918 can be located in computer-readable media 1920located in a set of client computers.

The different components illustrated for data processing system 1900 arenot meant to provide architectural limitations to the manner in whichdifferent embodiments can be implemented. In some illustrative examples,one or more of the components may be incorporated in or otherwise form aportion of, another component. For example, memory 1906, or portionsthereof, may be incorporated in processor unit 1904 in some illustrativeexamples. The different illustrative embodiments can be implemented in adata processing system including components in addition to or in placeof those illustrated for data processing system 1900. Other componentsshown in FIG. 19 can be varied from the illustrative examples shown. Thedifferent embodiments can be implemented using any hardware device orsystem capable of running program code 1918.

The description of the different illustrative embodiments has beenpresented for purposes of illustration and description and is notintended to be exhaustive or limited to the embodiments in the formdisclosed. The different illustrative examples describe components thatperform actions or operations. In an illustrative embodiment, acomponent can be configured to perform the action or operationdescribed. For example, the component can have a configuration or designfor a structure that provides the component an ability to perform theaction or operation that is described in the illustrative examples asbeing performed by the component. Further, To the extent that terms“includes”, “including”, “has”, “contains”, and variants thereof areused herein, such terms are intended to be inclusive in a manner similarto the term “comprises” as an open transition word without precludingany additional or other elements.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Not allembodiments will include all of the features described in theillustrative examples. Further, different illustrative embodiments mayprovide different features as compared to other illustrativeembodiments. Many modifications and variations will be apparent to thoseof ordinary skill in the art without departing from the scope and spiritof the described embodiment. The terminology used herein was chosen tobest explain the principles of the embodiment, the practical applicationor technical improvement over technologies found in the marketplace, orto enable others of ordinary skill in the art to understand theembodiments disclosed here.

What is claimed is:
 1. A method for creating a template in an integrated development environment, the method comprising: displaying, by a computer system, a set of tiles within a first area of a graphical user interface, wherein each tile corresponds to a set of data nodes that are composable into structured data objects according to a domain-specific language of the integrated development environment; composing, by the computer system, a structured data object from a subset of the tiles according to the domain-specific language of the integrated development environment, wherein the subset is displayed within a second area of the graphical user interface according to a context of the data nodes of the structured data object; applying, by the computer system, values to properties of data nodes of the subset according to the context of the data nodes of the structured data object; and creating, by the computer system, the template from selected tiles of the subset, wherein the template includes the values for the properties as-applied within the context of the data nodes of the structured data object.
 2. The method of claim 1, further comprising: identifying, by the computer system, the selected tiles from the subset of the tiles displayed within the second area of the graphical user interface, wherein the template is created in response to identifying the selected tiles.
 3. The method of claim 1, wherein creating the template further comprises: displaying, by the computer system, a modal overlying the first area, the second area, or combinations thereof; and receiving, within the modal, information about the template.
 4. The method of claim 1, further comprising: storing, by the computer system, the values as-applied within the context of the structured data object in association with the template of the selected tiles.
 5. The method of claim 1, wherein the structured data object is a first structured data object, the template is a first template, the values are first values, and the properties are first properties, the method further comprising: identifying, by the computer system, a second template, wherein the second template includes a second set of values for a second set of properties as-applied within a context of data nodes of a second structured data object; and composing, by the computer system, the first structured data object from the subset of the tiles and the second template.
 6. The method of claim 5, wherein applying the first values to the first properties further comprises: applying, by the computer system, the first values to the first properties according to the context of both the first structured data object and the second structured data object.
 7. The method of claim 5, wherein composing the structured data object further comprises: simultaneously adding, by the computer system, data nodes of the second template to a first data node of the first structured data object first according to the context of the first data node of the first structured data object and adding the data nodes of the second template to a second data node of the first structured data object according to the context of the second data node of the first structured data object.
 8. A template creation system comprising: a display system; a graphical user interface displayed on the display system; a computer system; and a template creator in the computer system, wherein the template creator is configured: to display a set of tiles within a first area of the graphical user interface, wherein each tile corresponds to a set of data nodes that are composable into structured data objects according to a domain-specific language of an integrated development environment; to compose a structured data object from a subset of the tiles according to the domain-specific language of the integrated development environment, wherein the subset is displayed within a second area of the graphical user interface according to a context of the data nodes of the structured data object; to apply values to properties of data nodes of the subset according to the context of the data nodes of the structured data object; and to create the template from selected tiles of the subset, wherein the template includes the values for the properties as-applied within the context of the data nodes of the structured data object.
 9. The template creation system of claim 8, wherein the template creator is further configured: to identify the selected tiles from the subset of the tiles displayed within the second area of the graphical user interface, wherein the template is created in response to identifying the selected tiles.
 10. The template creation system of claim 8, wherein in creating the template, the template creator is further configured: to display a modal overlying the first area, the second area, or combinations thereof; and to receive, within the modal, information about of the template.
 11. The template creation system of claim 8, wherein the template creator is further configured: to store the values as-applied within the context of the structured data object in association with the template of the selected tiles.
 12. The template creation system of claim 8, wherein the structured data object is a first structured data object, the template is a first template, the values are first values, and the properties are first properties, wherein the template creator is further configured: to identify a second template, wherein the second template includes a second set of values for a second set of properties as-applied within a context of data nodes of a second structured data object; and to compose the first structured data object from the subset of the tiles and the second template.
 13. The template creation system of claim 12, wherein in applying the first values to the first properties, the template creator is further configured: to apply the first values to the first properties according to the context of both the first structured data object and the second structured data object.
 14. The template creation system of claim 12, wherein in composing the structured data object, the template creator is further configured: to simultaneously add data nodes of the second template to a first data node of the first structured data object first according to the context of the first data node of the first structured data object and adding the data nodes of the second template to a second data node of the first structured data object according to the context of the second data node of the first structured data object.
 15. A computer program product for creating a template in an integrated development environment, the computer program product comprising: a computer-readable storage media; and program code, stored on the computer-readable storage media, for displaying a set of tiles within a first area of a graphical user interface, wherein each tile corresponds to a set of data nodes that are composable into structured data objects according to a domain-specific language of the integrated development environment; program code, stored on the computer-readable storage media, for composing a structured data object from a subset of the tiles according to the domain-specific language of the integrated development environment, wherein the subset is displayed within a second area of the graphical user interface according to a context of the data nodes of the structured data object; program code, stored on the computer-readable storage media, for applying values to properties of data nodes of the subset according to the context of the data nodes of the structured data object; and program code, stored on the computer-readable storage media, for creating the template from selected tiles of the subset, wherein the template includes the values for the properties as-applied within the context of the data nodes of the structured data object.
 16. The computer program product of claim 15, further comprising: program code, stored on the computer-readable storage media, for identifying the selected tiles from the subset of the tiles displayed within the second area of the graphical user interface, wherein the template is created in response to identifying the selected tiles.
 17. The computer program product of claim 15, wherein the program code for creating the template further comprises: program code, stored on the computer-readable storage media, for displaying a modal overlying the first area, the second area, or combinations thereof; and program code, stored on the computer-readable storage media, for receiving, within the modal, information about of the template.
 18. The computer program product of claim 15, further comprising: program code, stored on the computer-readable storage media, for storing the values as-applied within the context of the structured data object in association with the template of the selected tiles.
 19. The computer program product of claim 15, wherein the structured data object is a first structured data object, the template is a first template, the values are first values, and the properties are first properties, and further comprising: program code, stored on the computer-readable storage media, for identifying a second template, wherein the second template includes a second set of values for a second set of properties as-applied within a context of data nodes of a second structured data object; and program code, stored on the computer-readable storage media, for composing the first structured data object from the subset of the tiles and the second template.
 20. The computer program product of claim 19, wherein the program code for applying the first values to the first properties further comprises: program code, stored on the computer-readable storage media, for applying the first values to the first properties according to the context of both the first structured data object and the second structured data object.
 21. The computer program product of claim 19, wherein the program code for composing the structured data object further comprises: program code, stored on the computer-readable storage media, for simultaneously adding data nodes of the second template to a first data node of the first structured data object first according to the context of the first data node of the first structured data object and adding the data nodes of the second template to a second data node of the first structured data object according to the context of the second data node of the first structured data object. 